Many interactive computer applications receive input data in forms that are completed by end users. A form consists of at least one field. In each field, a user can enter one, or possibly more than one, value. Input fields may contain lists of selections that the user chooses from. It does not matter whether the user selects from predefined values or enters the values themselves.
The data in the input fields might be related. For example, an input form might contain one field for State and another field for County. It would be an error for the user to enter a County that is not in the State that the user entered. Frequently, applications have logic that only presents users with valid County choices once they have made a State choice. This logic might be embedded in the application or might rely on data in a table or file.
In most applications, the semantics of input forms is determined by the application code or is unknown. For example, in an application for managing users' access to data regarding multiple corporate divisions in multiple countries, there might be a form that contains a field for countries and a field for divisions. If a user chooses one country and one division, it might mean that the user should be allowed to see all of the data pertaining to that country and all of the data pertaining to that division. It might also mean that the user should only be allowed to see the data pertaining to that division within that country. The semantics of the form is generally embedded within the application.
Some applications, such as general-purpose reporting or query applications, do not represent the semantics within the application but allow users to construct queries by completing fields that are used to create queries in a database language such as SQL. Another kind of application that does not represent the semantics within the application is a web-based front-end for email. This kind of application is able to read form specifications from a file or table, but it simply sends the contents of the completed form to a human, for instance via email. The human then must interpret the form.
Some applications need to be able to generate forms based on data that is unknown when the applications are being written, and need to be able to interpret the contents of the forms after the applications have been written. These applications would either (1) have to make assumptions about the semantics of the forms, or (2) require end users to specify the semantics explicitly.